/*
 * Iterador.test.cpp
 *
 *  Created on: Apr 29, 2012
 *      Author: Nico
 */

using namespace std;

#include <iostream>
#include <stdlib.h>
#include <stdio.h>
#include <assert.h>
#include "ListaEnlazada.cpp"


void generarListaConEnteros(ListaEnlazada<int>* Lista);


int main(int argc , char* argv[]) {
	
	ListaEnlazada<int>* Lista = new ListaEnlazada<int>;
	generarListaConEnteros(Lista);
	
	Lista->print_full();
	
	Iterador<int>* iterador = Lista->get_iterador();
	
	cout<< "Length: " << iterador->get_length() << endl;
	assert( iterador->get_length() == 8 );
	
	Lista->deleteIndex(3);
	
	cout<< "Length: " << iterador->get_length() << endl;
	assert( iterador->get_length() == 7 );
	
	cout<< "Primer elemento: " << iterador->get_first() << endl
		<< "Ultimo elemento: " << iterador->get_last()  << endl;
	assert(iterador->get_first() == 9);
	assert(iterador->get_last() == 42);

	Lista->set(0,5);
	assert(iterador->get_first() == 5);
	Lista->set(0,9);
	assert(iterador->get_first() == 9);
	
	int cont = 0;
	while(iterador->hay_mas_elementos()){
		cont++;
		cout << iterador->get_next() << endl;
	}
	assert(cont == 7 );
	
	delete iterador;
	delete Lista;
	
	return 0;
}


void generarListaConEnteros(ListaEnlazada<int>* Lista){

	Lista->append(9);
	Lista->append(15);
	Lista->append(20);
	Lista->append(27);
	Lista->append(31);
	Lista->append(36);
	Lista->append(38);
	Lista->append(42);
}
